package com.bestcem.xm.award.service;


import com.bestcem.xm.award.mq.dto.*;

/**
 * @author xa.zhang <xa.zhang@idiaoyan.com>
 * @version v1.0
 * @date 2021/7/19 17:34
 * @desc
 */
public interface AwardMqHandler {

    /**
     * 根据temp_id清除AWARD_TEMP表
     *
     * @param tempCleanDTO 消息参数
     * @return 处理结果 true: 成功 false: 失败
     */
    boolean cleanAwardTempByTempId(TempCleanDTO tempCleanDTO);

    /**
     * 启动抽奖奖励
     *
     * @param drawAwardStartDTO 消息参数
     * @return 处理结果 true: 成功 false: 失败
     */
    boolean startDrawAward(DrawAwardStartDTO drawAwardStartDTO);

    /**
     * 结束抽奖奖励
     *
     * @param drawAwardStopDTO 消息参数
     * @return 处理结果 true: 成功 false: 失败
     */
    boolean stopDrawAward(DrawAwardStopDTO drawAwardStopDTO);

    /**
     * 启动微信红包奖励
     *
     * @param redPacketAwardStartDTO 消息参数
     * @return 处理结果 true: 成功 false: 失败
     */
    boolean startRedPacketAward(RedPacketAwardStartDTO redPacketAwardStartDTO);

    /**
     * 结束微信红包奖励
     *
     * @param redPacketAwardStopDTO 消息参数
     * @return 处理结果 true: 成功 false: 失败
     */
    boolean stopRedPacketAward(RedPacketAwardStopDTO redPacketAwardStopDTO);

    /**
     * 删除项目,清算红包
     *
     * @param projectDeleteDTO 消息参数
     * @return 处理结果 true: 成功 false: 失败
     */
    boolean deleteProject(ProjectDeleteDTO projectDeleteDTO);

    /**
     * 微信红包发送中状态再次查询钱包，更新状态,正常情况下发送中后面会变成发送成功或者失败
     * 钱包状态 PICKED->SENDING->SENT
     * @param redPacketAwardSendingDTO 消息参数
     * @return 处理结果 true: 成功 false: 失败
     */
    boolean sendingRedPacketAward(RedPacketAwardSendingDTO redPacketAwardSendingDTO);


    /**
     * 开始奖励
     * @param awardStartDTO 消息参数
     */
    void startAward(AwardStartDTO awardStartDTO);

    /**
     * 结束奖励
     * @param awardStopDTO 消息参数
     */
    void stopAward(AwardStopDTO awardStopDTO);

    /**
     * 发送中奖短信通知
     *
     * @param smsDTO 中奖短信参数
     */
    void sendDrawAwardSms(DrawAwardSendSmsDTO smsDTO);
}
